import History from './base'
class HashHistory extends History {
  constructor(router) {
    super(router)
    this.router = router

    // 确保hash模式下 有一个 / 路径
    ensureSlash()
  }

  // 获取当前的路由
  getCurrentLocation() {
    return getHash()
  }

  setUpListener() {
    window.addEventListener('hashchange', () => {
      // 当hash值发生变化 再次拿到hash值进行跳转
      this.transitionTo(getHash())
    })
  }

  push(to) {
    this.transitionTo(to, () => { // 去更新hash值 hash值变化虽然会再次跳转 但是不会重新更新current属性
      window.location.hash = to
    })
  }
}

// 去报路由后有'/'
function ensureSlash() {
  if (window.location.hash) {
    return
  } else {
    window.location.hash = '/'
  }
}

// 获取当前路径的hash
function getHash() {
  return window.location.hash.slice(1)
}

export default HashHistory